1. Field of the Invention
The present invention relates to a method, system, and program for processing objects in a distributed computing environment.
2. Description of the Related Art
The Java** Remote Method Invocation (RMI) system, developed by Sun Microsystems, Inc., provides a framework in which objects on separate computers may communicate over a network. RMI is a Remote Procedure Call (RPC) mechanism that may be implemented using more than a single transport protocol. In the Java RMI framework, an object on a server is represented on a client system by a stub or proxy object. Applications running on the clients can call a local method on the proxy object that causes the corresponding method on the remote object to be invoked. When a proxy method is invoked, the proxy object communicates with the RMI runtime system on the server side and the proxy object communicates parameters to the remote object. The JVM including the remote object may lie on a remote system or the same system including the proxy object. The proxy object then receives the result of the method invocation and returns the value (if any) to the caller.
In distributed computing environments, services and clients running in different machines or address spaces may utilize RMI to allow clients to access remote services in another address space, such as a remote server. When accessing a remote service using RMI, the client may receive objects from the service (the service might also receive objects from the client), yet not have loaded the classes needed to manipulate the received objects. For instance, when the client receives return values (or exceptions), the client needs the class definitions for such received objects to use the data received from the remote server. The RMI specification provides for dynamic class loading (also known as network class loading or remote class loading) of the class definitions for the objects received from remote services that are not locally available at the client. This includes the dynamic downloading of remote classes needed by the client to use any object passed in RMI calls for which the class is not locally available. Once all necessary classes are downloaded from the remote address space, the client can then execute or otherwise manipulate objects returned by the remote service in response to the RMI call.
In the prior art, the client will download the classes in a file conforming to the Java Archive Format (JAR) file format or download the classes individually if they are not packaged in a JAR file, which is a file format based on the ZIP file format and is used to aggregate many files. JAR files are used to encapsulate multiple files into a single file that contain class files and other resources associated with a Java applet, application or component. The remote server would provide the client the classes needed for dynamic downloading in one or more JAR files.
When the client downloads the JAR with domestic classes, which the client does not need, and exportable classes, which the client may or may not need, the client will consume processing, memory and storage resources to load domestic and exportable classes that the client does not need. This is also disadvantageous because the domestic classes may include data, such as secure data, that is not intended for the client. Further, the server will have more difficulty versioning the domestic classes when the domestic classes have been loaded in other clients because the server will have to ensure compatibility with versions of the domestic classes downloaded to remote clients.
For these reasons, there is a need in the art for improved techniques for making network classes available to clients receiving objects from remote services over the network that require the network classes to access the received objects.